
//581.最短无序连续子数组
class Solution {
public:
    int findUnsortedSubarray(vector<int>& nums) {
        //从左向右最后一个小于中间段max的就是右边界
        //从右向左最后一个大于中间段min的就是左边界
        int n=nums.size();
        int max=nums[0],min=nums[n-1];
        int end=0,begin=0;
        for(int i=0;i<n;i++)
        {
            if(nums[i]<max) end=i;
            else max=nums[i];
        
            if(nums[n-1-i]>min) begin=n-1-i;
            else min=nums[n-1-i];
        }
        if(end<=begin) return 0;
        return end-begin+1;
    }
};